package cn.ikun.mzw;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class AppReflect {
    public static void main (String [] args) throws Exception {

            Class<?> A = Class.forName("cn.ikun.mzw.Animal");
            Object o = A.newInstance();
            // getDeclaredFields ：通过类对象获取该类下所有的字段
        Field[] fields = A.getDeclaredFields();


        for (Field field : fields) {
                field.setAccessible(true);
                // getType ：获取某个字段的类型，得到的是该类型的类对象
                Class<?> type = field.getType();
                if(type.toString().endsWith("String")) {
                    // 说明该字段是字符串
                    field.set(o, "BBQ");
                } else if (type.toString().endsWith("Integer")) {
                    // 说明该字段是整数
                    field.set(o, 666);
                } else if (type.toString().endsWith("Double")) {
                    // 说明该字段是小数
                    field.set(o, 5.20);
                }
            }

        Method say = A.getDeclaredMethod("say");
        say.invoke(o);



        }

}
